﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Circus.Utility {

    /// <summary>
    /// 提供时间处理相关函数。
    /// </summary>
    public static class DateTimeHelper {

        /// <summary>
        /// 清除日期的纳秒部分。
        /// </summary>
        /// <param name="dateTime">要处理的时间对象。</param>
        /// <returns>返回处理后的时间对象。</returns>
        public static DateTime clearMilliSeconds(this DateTime dateTime) {
            return new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second);
        }

        /// <summary>
        /// 清除日期的分秒部分。
        /// </summary>
        /// <param name="dateTime">要处理的时间对象。</param>
        /// <returns>返回处理后的时间对象。</returns>
        public static DateTime clearMiniutes(this DateTime dateTime) {
            return new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, 0, 0);
        }

        /// <summary>
        /// 清除日期的时分秒部分。
        /// </summary>
        /// <param name="dateTime">要处理的时间对象。</param>
        /// <returns>返回处理后的时间对象。</returns>
        public static DateTime clearHours(this DateTime dateTime) {
            return new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, 0, 0, 0);
        }

        /// <summary>
        /// 清除日期的星期部分。
        /// </summary>
        /// <param name="dateTime">要处理的时间对象。</param>
        /// <returns>返回处理后的时间对象。</returns>
        public static DateTime clearWeeks(this DateTime dateTime) {
            var dt =new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, 0, 0, 0);
            dt = dt.AddDays(-(int)dt.DayOfWeek);
            return dt;
        }

        /// <summary>
        /// 清除日期的日期时间部分。
        /// </summary>
        /// <param name="dateTime">要处理的时间对象。</param>
        /// <returns>返回处理后的时间对象。</returns>
        public static DateTime clearDays(this DateTime dateTime) {
            return new DateTime(dateTime.Year, dateTime.Month, 1, 0, 0, 0);
        }

    }
}
